package com.cy.pj.arithmetic.controller;

import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController//ResponseBody+Controller
public class ArithmeticController {
    @RequestMapping("/doCompute1/{n1}/{n2}")
    public String doCompute1(@PathVariable Integer n1,@PathVariable Integer n2){
        try {
            Integer result=n1/n2;
            return "result is "+result;
        }catch (Exception e){
            return "do arithmetic error,cause by "+e.getMessage();
        }
    }
    @RequestMapping("/doCompute2/{n1}/{n2}")
    public String doCompute2(@PathVariable Integer n1,@PathVariable Integer n2){
            Integer result=n1/n2;
            //出现异常会找自定义的异常处理方法 本类中 > 父类中 > 全局异常处理类
            return "result is "+result;
    }

    /**
     * @ExceptionHandler 描述的方法为控制逻辑层异常处理方法
     * 此注解内定义的异常类型为异常处理方法可以处理的异常类型
     * 其中方法参数中的异常类型应大于等于注解中定义的异常类型(建议一致)
     * @param a 为异常处理方法捕获到的异常对象
     * 此异常处理方法可以处理这个方法所在类的所有算数异常
     */
    @ExceptionHandler(ArithmeticException.class)
    public String doHandleArithmeticException(ArithmeticException a){

        return "do compute error,cause by "+a.getMessage();
    }
}
